package Other;

public class leet_69 {
    public static void main(String[] args) {
        Solution_69 p =new Solution_69();
        int ans = p.mySqrt(8);
        System.out.println(ans);
    }
}

class Solution_69 {
    /**
     * 搞清楚一个概念
     * 1. 边界问题 当且仅当 right > left 才跳出循环因为此时找到一个中间值left
     * 2. 这个问题的答案是需要整数部分，那么只需要 k^2 <= x 那么只需要在左边赋予值
     * 3. 此时数据汇总
     * @param x
     * @return
     */
    public int mySqrt(int x) {
        int left = 0;
        int right = x;
        int ans = -1;

        while(left<=right){
            // 取出中间值
            int mid = (left+right)/2;
            if((long)mid*mid <= x){
                ans = mid;
                left = mid+1;
            }else {
                right = mid-1;
            }
        }
        return ans;
    }
}

